public class Main {
    public static void main(String[] args) {
        Solution s = new Solution();
        System.out.println(s.minSubArrayLen(7, new int[]{2,3,1,2,4,3}));
        System.out.println(s.minSubArrayLen(4, new int[]{1,4,4}));
        System.out.println(s.minSubArrayLen(11, new int[]{1,1,1,1,1,1,1,1}));
    }
}

//双指针
class Solution {
    public int minSubArrayLen(int target, int[] nums) {
        int l = 0, h = 0;
        int minLen = 0;
        int subArraySum = 0;
        while(h < nums.length || subArraySum >= target){
            if(subArraySum < target){
                subArraySum += nums[h++];
            }
            else{
                subArraySum -= nums[l++];
            }
            if(subArraySum >= target){
                int len = h - l;
                if(minLen == 0 || len < minLen){
                    minLen = len;
                }
            }
        }
        return minLen;
    }
}